草庐IT

ML 方法

全部标签

go - 我如何模拟接口(interface)内的特定嵌入式方法

我有这段代码,我想为更新功能编写一个单元测试。我如何模拟FindByUsername函数?我尝试覆盖u.FindByUsername但它不起作用。另外,我可以编写一些函数来将u*UserLogic和userNamestring作为输入参数并执行u.FindByUsername()和模拟这个函数,但这不是一个干净的解决方案我需要一个更好的解决方案来模拟UserOperation接口(interface)中的方法。packagelogicimport("errors""fmt")var(dataStore=map[string]*User{"optic":&User{Username:"b

根据 map[string]somestruct 调用 golang 调度方法

假设我有很多带有接收器的函数或方法,每个函数或方法都有不同类型的参数。我想使用表驱动方法来调度函数或方法调用。所以我将构建一个这样的表:typecommandstruct{namestringhandlerfunc(parameter...interface{})//Idon'tknowwhethertouse`...interface{}`iscorrect}table:=map[string]command{...}func(ccommand)foo(f1int,f2string){}func(ccommand)bar(b1bool,b2int,b3string){}//metho

go - 有没有更简单的方法来更新本地 Go 包

我正在使用导入到不同项目中的多个包,这些包包括用于我的业务逻辑的自定义适配器,这些适配器由lambda和谷歌云函数以及其他公共(public)包共享。我现在这样做的方式是我出售它们并将它们包含在云功能中。对于可以在虚拟机上编译部署的应用,我都是单独编译的。这对我来说很好,但是,开发这些模块很痛苦。如果我更新包中的方法签名和名称,我必须将我的更改推送到github/gitlab(我的包路径类似于gitlab.com/groupName/projectName/pkg/packageName),然后执行goget-u以更新包。这也并没有真正更新它,有时会卡在旧版本上而不知道如何更新它。我想

sql - 删除用于测试套件的所有数据库记录的最佳方法是什么?

我有一个测试套件使用从YAML文件读取的种子污染我的数据库。我想知道是否有一种方法可以在运行测试后清理我的数据库(删除用于测试套件的所有记录)。//OpendbandreturnspointerandcloserfuncfuncprepareMySQLDB(t*testing.T)(db*sql.DB,closerfunc()error){db,err:=sql.Open("mysql","user:pass@/database")iferr!=nil{t.Fatalf("openmysqlconnection:%s",err)}returndb,db.Close}//Pollutem

go - 有没有更简单的方法来使用 FlatBuffers 序列化 [][]byte?

我希望使用FlatBuffers序列化[][]byte消息。鉴于不能嵌套FBS向量,这似乎是要走的路:namespacemsgfbs;tableSubmitMessage{nonces:[Nonce];}tableNonce{bytes:[ubyte];}现在为了编写这个结构,我最终编写了这个函数:funcNewSubmitMessage(builder*fbs.Builder,nonces[][]byte)[]byte{builder.Reset()nonceCount:=len(nonces)//ConvertnoncestobytevectorsbyteVectors:=make

go - Go 中带有接收者的方法声明

以下错误:./main.go:13:c.Setundefined(typeredis.ConnhasnofieldormethodSet)./main.go:19:invalidreceivertype*redis.Conn(redis.Connisaninterfacetype)./main.go:20:red.Sendundefined(type*redis.ConnhasnofieldormethodSend)由这段代码产生:packagemainimport("encoding/json""github.com/garyburd/redigo/redis""github.com

methods - Go:方法调用后对象不持久

我正在尝试为我正在编写的程序实现MarshalBinary和UnmarshalBinary,但在调用UnmarshalBinary后,我的更改似乎并没有持续存在。我的MWE:packagemainimport("encoding/binary""fmt""strconv")typeteststruct{var1uint32var2uint32}func(selftest)MarshalBinary()([]byte,error){tmp:=make([]byte,8)binary.BigEndian.PutUint32(tmp[0:4],self.var1)binary.BigEndi

go - 是否有内置方法来获取减去查询字符串的 URL?

是否有内置方法来获取URL中减去查询字符串的部分?喜欢来自http://example.com/?search=test的http://example.com/?从URL结构的字段(或者甚至通过拆分问号字符)进行组装很简单,所以我不是在寻找示例代码。这只是一个简单的问题,看看它是否在源代码/文档中,我错过了它。谢谢! 最佳答案 没有。没有针对您的确切用例的便捷功能。但是,您可以使用net/url包来创建一个:http://play.golang.org/p/Kk3EPBXMsmpackagemainimport("fmt""log"

go - 在 Go 中重新分配方法

假设我有以下内容:packagemainimport"fmt"typeI1interface{m1()}funcf1(){fmt.Println("dosomething")}funcmain(){varobjI1obj.m1=f1obj.m1()}这会产生错误./empty.go:16:cannotassigntoobj.m1为什么我不能分配给“方法字段”?在C中,我可以传递函数指针。Go中的等价物是什么? 最佳答案 你不能把一个函数赋值给一个接口(interface),你可以为一个结构赋值,例如:typeS1struct{m1f

templates - 在 go html 模板中创建循环的最佳方法是什么?

我正在尝试通过html/templateGo包创建一个用于显示帖子的html模板。我还想在我的页面上进行分页,每页显示5个帖子。因此,我从我的帖子存储库中获取帖子计数,将其除以每页帖子值并四舍五入(ceil)。这是当前可用帖子的总页数。我将总页数传递到我的html模板。现在,在我的html模板中,我需要显示页面按钮从1到总数。在text/html包中有一个关于如何使用管道的很棒的文档,但我没有找到任何创建简单循环的示例。我找到了解决方案,但我不确定它是否合适。我不仅可以向模板传递总页数,还可以传递一组可用页面,因此在我的模板中我可以执行类似以下操作:{{range.pages}}{{.